package com.yyfax.pay.depository.service.inner;

import com.yyfax.pay.depository.domain.FuiouUserRegister;
import com.yyfax.pay.depository.vo.UserRegisterVO;
import com.yyfax.pay.third.model.to.fuioudeposit.TradeQueryResultXMLRsp;
import com.yyfax.pay.third.model.to.fuioudeposit.xml.ChargeWithdrawPlain;
import com.yyfax.pay.third.model.to.fuioudeposit.xml.UserChangeCardPlain;
import com.yyfax.pay.third.model.to.fuioudeposit.xml.UserInfoPlain;
import com.yyfax.pay.vo.depository.*;

/**
 * 富友接口查询服务
 *
 * @author yejc
 * @date 2017-09-08
 * @since v1.0.0
 */
public interface FuiouQueryService {
	/**
	 * 充值提现查询
	 *
	 * @author yejc
	 * @date 2017-09-20
	 * @since v2.0.0
	 * @param merchantCode
	 * @param params
	 * @return
	 */
	public ChargeWithdrawPlain queryChargeWithdraw(String merchantCode, QueryChargeWithdrawReq params);

	/**
	 * 用户更换银行卡查询
	 *
	 * @author yejc
	 * @date 2017-09-20
	 * @since v2.0.0
	 * @param merchantCode
	 * @param params
	 * @return
	 */
	public UserChangeCardPlain queryChangeCard(String merchantCode, QueryChangeCardReq params);

	/**
	 * 用户信息查询
	 *
	 * @author yejc
	 * @date 2017-09-20
	 * @since v2.0.0
	 * @param merchantCode
	 * @param params
	 * @return
	 * @deprecated 作废，使用{@linkplain FuiouQueryService#queryUserInfo2(FuiouUserRegister)} edit by buyi
	 */
	public UserInfoPlain queryUserInfo(String merchantCode, QueryUserInfoReq params);

	/**
	 * 交易查询
	 *
	 * @author yejc
	 * @date 2017-09-20
	 * @since v2.0.0
	 * @param merchantCode
	 * @param params
	 * @return
	 */
	public TradeQueryResultXMLRsp.TradePlain queryTrade(String merchantCode, QueryTradeReq params);

	/**
	 * 查询富友存管用户信息
	 * 
	 * @author buyi
	 * @date 2018-01-16 11:42:20
	 * @since v2.0.7
	 * @param order
	 * @return
	 * @throws Exception
	 */
	public UserRegisterVO queryUserInfo2(FuiouUserRegister po) throws Exception;

	/**
	 * 查询转账充值
	 *
	 * @author wujiande
	 * @date 2018-05-22 11:01:38
	 * @since v2.1.7
	 *
	 * @param merchantCode
	 * @param req
	 * @return
	 * @throws com.yyfax.pay.common.exception.PayException
	 */
	public QueryTransferChargeRsp queryTransferCharge(String merchantCode, QueryTransferChargeReq req);

}
